// 1. 数组
let arr1:number[] = [1,2,3]
let arr2:Array<number> = [1,2,3] // 泛型写法

// 2. 元组类型在使用的时候 数据类型的位置和数据的个数应该和在定义元祖的时候的数据类型及其位置是一致的
let arr3:[string,number,boolean] = ['sss',100,true]

// 枚举 封装常用的变量进入枚举
enum Color {
    red,
    green=2,
    blue
}

console.log(Color[3]) // blue
console.log(Color.red)

// 3. any类型


// 4. void类型 没有任何类型 当函数没有返回值的时候
let vd:void = undefined //毫无意义
function showMsg():void{
    console.log('毫无问题呀')
}

// 5. object类型


// 联合类型
// 定义一个函数得到一个数字或字符串值的字符串形式值
function getString(str:number|string):string{
    return str.toString()
}

// 类型断言 ts不会检测数据自动转换的问题
//  （str as string) 告诉TS是什么类型
function getString2(str:number|string):number{
    // 告知TS这里的str一定是string  不是number
    if((<string>str).length){
        return (<string>str).length
    }else{
        return str.toString().length
    }
}

// 类型推断